export interface ApiResponse<T> {
  code: number
  message: string
  data: T
  timestamp: string
}

export interface PageResponse<T> {
  total: number
  records: T[]
}

export interface ArticleListItemVO {
  id: number
  title: string
  summary: string
  coverImage?: string
  viewCount: number
  likeCount: number
  commentCount: number
  categoryId?: number
  categoryName?: string
  authorName?: string
  tags?: string
  createTime: string
}

export interface ArticleDetailVO {
  id: number
  title: string
  content: string
  summary: string
  coverImage?: string
  categoryId?: number
  categoryName?: string
  authorName?: string
  viewCount: number
  likeCount: number
  commentCount: number
  tags?: string
  createTime: string
  updateTime?: string
  status?: number
}

export interface CommentVO {
  id: number
  articleId: number
  parentId: number
  content: string
  nickname?: string
  email?: string
  createTime: string
}

export interface CreateCommentDTO {
  content: string
  nickname?: string
  email?: string
  parentId?: number
  captchaToken?: string
  captchaAnswer?: string
}

export interface CommentTreeVO extends CommentVO {
  children: CommentVO[]
}

export interface CategoryVO {
  id: number
  name: string
}

export interface TagVO {
  id: number
  name: string
}

export interface ArticleArchiveItemVO {
  id: number
  title: string
  createTime: string
}

export interface ResumeDetailVO {
  id: number
  userId: number
  name: string
  title?: string
  summary?: string
  avatar?: string
  email?: string
  phone?: string
  location?: string
  github?: string
  linkedin?: string
  website?: string
  createTime?: string
  updateTime?: string
  experiences: WorkExperienceVO[]
  skills: SkillVO[]
  projects: ProjectVO[]
}

export interface WorkExperienceVO {
  id: number
  resumeId: number
  company: string
  position: string
  startDate?: string
  endDate?: string
  current?: number
  description?: string
  achievements?: string
  sortOrder?: number
}

export interface SkillVO {
  id: number
  resumeId: number
  name: string
  category?: string
  level?: number
  description?: string
  sortOrder?: number
}

export interface ProjectVO {
  id: number
  resumeId: number
  name: string
  description?: string
  highlights?: string
  technologies?: string
  githubUrl?: string
  demoUrl?: string
  imageUrl?: string
  startDate?: string
  endDate?: string
  sortOrder?: number
}


